/*
 * KOTLIN CODEGEN BOX SPEC TEST (POSITIVE)
 *
 * SPEC VERSION: 0.1-100
 * MAIN LINK: expressions, constant-literals, real-literals -> paragraph 4 -> sentence 1
 * NUMBER: 1
 * DESCRIPTION: Real literals with underscores in a whole-number part and a fraction part.
 */

val value_1 = 0.0_0
val value_2 = 0.0__0___0
val value_3 = 0.0_0__0_0
val value_4 = 0__0.0
val value_5 = 0_0_0.0______0
val value_6 = 00_______________00.0_0_0

val value_7 = 2_2.0_0
val value_8 = 33__3.00__0
val value_9 = 4_44____4.00______00
val value_10 = 5_________555_________5.0
val value_11 = 666_666.0_____________________________________________________________________________________________________________________0
val value_12 = 7777777.0_0_0
val value_13 = 8888888_8.0000
val value_14 = 9_______9______9_____9____9___9__9_9.0

val value_15 = 0_0_0_0_0_0_0_0_0_0.1234567890
val value_16 = 1_2_3_4_5_6_7_8_9.2_3_4_5_6_7_8_9
val value_17 = 234_5_678.345______________678
val value_18 = 3_456_7.4567
val value_19 = 456.5_6

fun box(): String? {
    val value_20 = 5.6_5
    val value_21 = 6_54.7654
    val value_22 = 7_6543.87654_3
    val value_23 = 876543_____________2.9_____________8765432
    val value_24 = 9_____________87654321.098765432_____________1

    val value_25 = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000___0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_0
    val value_26 = 0_000000000000000000000000000000000000000000000000000000000000000000000000_000000000000000000000000000000000000000000000000000000000000000000000000_000000000000000000000000000000000000000000000000000000000000000000000000_000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001
    val value_27 = 9999999999999999999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________999999999999999999999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________999999999999999999999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________999999999999999999999999999999999999999999999.33333333333333333333333333333333333333333333333_33333333333333333333333333333333333333333

    if (value_1.compareTo(0.0_0) != 0 || value_1.compareTo(0.0) != 0) return null
    if (value_2.compareTo(0.0__0___0) != 0 || value_2.compareTo(0.0) != 0) return null
    if (value_3.compareTo(0.0_0__0_0) != 0 || value_3.compareTo(0.0) != 0) return null
    if (value_4.compareTo(0__0.0) != 0 || value_4.compareTo(0.0) != 0) return null
    if (value_5.compareTo(0_0_0.0______0) != 0 || value_5.compareTo(0.0) != 0) return null
    if (value_6.compareTo(00_______________00.0_0_0) != 0 || value_6.compareTo(0.0) != 0) return null

    if (value_7.compareTo(2_2.0_0) != 0 || value_7.compareTo(22.0) != 0) return null
    if (value_8.compareTo(33__3.00__0) != 0 || value_8.compareTo(333.0) != 0) return null
    if (value_9.compareTo(4_44____4.00______00) != 0 || value_9.compareTo(4444.0) != 0) return null
    if (value_10.compareTo(5_________555_________5.0) != 0 || value_10.compareTo(55555.0) != 0) return null
    if (value_11.compareTo(666_666.0_____________________________________________________________________________________________________________________0) != 0 || value_11.compareTo(666666.0) != 0) return null
    if (value_12.compareTo(7777777.0_0_0) != 0 || value_12.compareTo(7777777.0) != 0) return null
    if (value_13.compareTo(8888888_8.0000) != 0 || value_13.compareTo(8.8888888E7) != 0) return null
    if (value_14.compareTo(9_______9______9_____9____9___9__9_9.0) != 0 || value_14.compareTo(9.9999999E7) != 0) return null

    if (value_15.compareTo(0_0_0_0_0_0_0_0_0_0.1234567890) != 0 || value_15.compareTo(0.123456789) != 0) return null
    if (value_16.compareTo(1_2_3_4_5_6_7_8_9.2_3_4_5_6_7_8_9) != 0 || value_16.compareTo(1.234567892345679E8) != 0) return null
    if (value_17.compareTo(234_5_678.345______________678) != 0 || value_17.compareTo(2345678.345678) != 0) return null
    if (value_18.compareTo(3_456_7.4567) != 0 || value_18.compareTo(34567.4567) != 0) return null
    if (value_19.compareTo(456.5_6) != 0 || value_19.compareTo(456.56) != 0) return null
    if (value_20.compareTo(5.6_5) != 0 || value_20.compareTo(5.65) != 0) return null
    if (value_21.compareTo(6_54.7654) != 0 || value_21.compareTo(654.7654) != 0) return null
    if (value_22.compareTo(7_6543.87654_3) != 0 || value_22.compareTo(76543.876543) != 0) return null
    if (value_23.compareTo(876543_____________2.9_____________8765432) != 0 || value_23.compareTo(8765432.98765432) != 0) return null
    if (value_24.compareTo(9_____________87654321.098765432_____________1) != 0 || value_24.compareTo(9.876543210987654E8) != 0) return null
    if (value_25.compareTo(000000000000000000000000000000000000000000000000000000000000000000000000000000000000000___0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000_0) != 0 || value_25.compareTo(0.0) != 0) return null
    if (value_26.compareTo(0_000000000000000000000000000000000000000000000000000000000000000000000000_000000000000000000000000000000000000000000000000000000000000000000000000_000000000000000000000000000000000000000000000000000000000000000000000000_000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000___0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001) != 0 || value_26.compareTo(0.0) != 0) return null
    if (value_27.compareTo(9999999999999999999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________999999999999999999999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________999999999999999999999999999999999999999999999_______________99999999999999999999999999999_______________99999999999999999999999999999_______________999999999999999999999999999999999999999999999.33333333333333333333333333333333333333333333333_33333333333333333333333333333333333333333) != 0 || value_27.compareTo(Double.POSITIVE_INFINITY) != 0) return null

    return "OK"
}
